Arduino Stack Exchange: Questions and Answers by George Duckett

Arduino Stack Exchange: Questions and Answers by George Duckett

Author:George Duckett [Duckett, George]
Language: eng
Format: epub, azw3, mobi, pdf
Tags: Arduino Stack Exchange
Publisher: George Duckett
Published: 2016-03-19T23:00:00+00:00


After changing parameter type to String, int or whatever, all the errors go away. I am able to create Highscore-objects INSIDE the writeHighscore() function, but how can I pass objects to it?

Edit 1 - Object creation

Highscore hs = Highscore("John", 975); Serial.println(hs.toString()); // Prints "John - 975" as expected writeHighscore(hs); // Error

Tags: c++ (Prev Q) (Next Q)

User: krystah

* * *

Answer by brettam

You are doing everything right, but you need to move the class outside of your .ino file for this to work. I'm not sure why the arduino IDE makes you do this (see edit) , but it is something I've run into before.

I just tested this, and moving the class declaration outside the ino and into a header file in the project folder makes it compile correctly. Just remember to include the header you make in the ino and to #include "Arduino.h" in the header to get access to "String" again.

Technically, only a forward declaration of the class needs to be in a different file.

Edit:

I'm relatively sure what is happening is the IDE is generating forward declarations for all your functions but not the class, which are placed before your class definition. This means that breaking the function regex the IDE uses with a dummy "throw()" fixes your problem. for example:

void writeHighscore(Highscore hs) throw() { ...

should work just fine (it worked for me)



Download



Copyright Disclaimer:
This site does not store any files on its server. We only index and link to content provided by other sites. Please contact the content providers to delete copyright contents if any and email us, we'll remove relevant links or contents immediately.